package asteroids.model.programs.expressions;

public interface ExprEvaluator<T> {
	
	public T evaluate(And and);

	public T evaluate(Or or);
	
	public T evaluate(LessThan lt);

	public T evaluate(GreaterThan gt);

	public T evaluate(Equality eq);

	public T evaluate(Add add);
	
	public T evaluate(Subtract sub);

	public T evaluate(Division div);

	public T evaluate(Multiply mul);

	public T evaluate(DoubleLiteral d);

	public T evaluate(BooleanLiteral b);

	public T evaluate(Not not);

	public T evaluate(Sqrt sqrt);

	public T evaluate(Sin sin);

	public T evaluate(Cos cos);

	public T evaluate(GetDirection getDir);

	public T evaluate(Self self);

	public T evaluate(GetX getX);

	public T evaluate(GetY getY);
	
	public T evaluate(GetVX getVX);

	public T evaluate(GetVY getVY);

	public T evaluate(GetRadius getRadius);

	public T evaluate(Variable var);

	public T evaluate(EntityLiteral e);

	public T evaluate(Null null1);

}
